package com.benshou.bcss.common.db;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.NonNull;
import org.apache.ibatis.reflection.MetaObject;

/**
 * MetaObjectHandler: 多例处理器
 * <p>
 *     由于 {@code com.baomidou.mybatisplus.core.handlers.MetaObjectHandler} 全局仅可以注册一个。
 *     当处理特定逻辑时，代码会全部堆到一个 {@literal MetaObjectHandler} 中，非常冗杂，估使用下级 Handler 的方式进行分流处理。
 * </p>
 *
 * @author <a href="mailto:liuzhenbang@benshou.com">Liu Zhenbang</a>
 */
public interface MultitonMetaObjectHandler {

    /**
     * 插入元对象字段填充（用于插入时对公共字段的填充）
     *
     * @param metaObject 元对象
     */
    void insertFill(@NonNull MetaObjectHandler handler, @NonNull MetaObject metaObject);

    /**
     * 更新元对象字段填充（用于更新时对公共字段的填充）
     *
     * @param metaObject 元对象
     */
    void updateFill(@NonNull MetaObjectHandler handler, @NonNull MetaObject metaObject);
}
